var a = []
for (var i = 0; i < 10; i++) {
    a[i] = function () {
        console.log(i);
    }
}
console.log(a[6]());
//输出10 
//var i 是全局作用域，再循环结束之后 i已经是10了 循环外部调用函数的话i已经是10了
/**----------------------------------------------------------------------------------------------------*/
var tmp = 123;
if (true) {
    console.log(tmp);
    let tmp 
}
// 报错 ReferenceError
// 只要块级作用域存在let 或者const 那么let 或者 const 就绑定这个区域不被外部影响，
// 用let 和const 声明的变量在声明之前使用的部分称之为暂时性死区，也是为了避免未声明就使用的错误发生，利于代码规范化
/**----------------------------------------------------------------------------------------------------*/
var arr = [12, 34, 32, 89, 4]
console.log(Math.min(...arr));
/**----------------------------------------------------------------------------------------------------*/
var a = 10
var obj = {
    a: 20,
    fn: () => {
        setTimeout(() => {
            console.log(this.a);
        })
    }
}
obj.fn()
// 输出20
// fn是普通函数，普通函数的this指向调用者obj，setTimeout 是箭头函数，箭头函数没有this机制，
// 所以箭头函数的this继承外面最近一层fn函数的this, 也就是obj, obj.a = 20

 






